package com.telcordia.cvas.rpn.fixtures;

import com.telcordia.cvas.rpn.RpnCalculator;

public class ExecutePrograms {
	CalculatorUnderTest calculator = new CalculatorUnderTest();
	private String[] values;
	private String name;

	public void setValues(String[] values) {
		this.values = values;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String result() {
		calculator.TheCalculator.setXRegister(stringToInt(values[0]));
		
		for(int i = 1; i < values.length; ++i) {
			calculator.enter();
			calculator.setXRegister(stringToInt(values[i]));
		}
		
		calculator.perform(name);
		
		return buildResults(calculator);
	}

	private String buildResults(RpnCalculator calculator) {
		int[] values = calculator.getStack();
		
		StringBuffer result = new StringBuffer();
		boolean first = true;
		for(int current : values) {
			if(!first)
				result.append(", ");
			result.append(current);
			first = false;
		}
		
		return result.toString().trim();
	}
	
	private int stringToInt(String value) {
		return Integer.parseInt(value);
	}
}
